Software-defined networking (SDN) is a form of computer networking in which the control plane is decoupled from the data plane. With a separated control plane, SDN can be used to enable different types of services. Service chaining is a service in which SDN can play an important role. Traditionally, a service chain consists of a set of dedicated network service boxes such as firewalls, load balancers, and application delivery controllers that are concatenated to support a specific application. With a new service request, new devices must be installed and interconnected in a certain order. This can be a complex, time-consuming, and error-prone process, requiring careful planning of topology changes and network outages, and increasing costs.
Network Function Virtualization (NFV) is a concept that involves the implementation of network services in software that can run on a range of industry-standard high-volume servers, switches, and storage devices. With NFV, SDN can dynamically create a virtual environment for a specific service chain and eliminate the additional hardware and other issues described above.
Such services are typically implemented by the ordered combination of a number of service functions that are deployed at different points within a network. Contemporary conventional deployment models have service functions inserted on the data-forwarding path between communicating peers. However, there is movement toward a different deployment model, where selected service functions, whether physical or virtualized, do not necessarily reside on the direct data path, and instead traffic is routed through the service functions wherever they are deployed.
For a given service, the abstracted view of the required service functions and the order in which they are to be applied may be referred to as a service function chain or simply a service chain. A service chain is instantiated through selection of specific service function instance components on specific network nodes to form what may be referred to as service chain instance path. The service functions may be applied at any layer within the network protocol stack (e.g., the network layer, transport layer, application layer, etc.).
A change to an existing service chain instance path may be made because, for example, a service function instance component on a particular network node fails or loses its connection to the network, in which case a service function instance component on a different node may be substituted for the failed or lost node, essentially forming a new service chain instance path. A change to an existing service chain instance path may also be made because, for example, a service function instance component is over-utilized, in which case a higher-capacity service function instance component on a different node, or additional service function instance components on other nodes, may be substituted into or added to the existing service chain instance path, again essentially forming a new service chain instance path.